Method and apparatus to transmit a calendar event in target calendaring system format

ABSTRACT

An agent may receive an event from a source calendaring system, wherein the event specifies a person, perhaps including a uniform resource locator, having disparate calendaring system. The disparate calendaring system may use a native event format for coordinating events. The agent may lookup a template to convert the event to a native event. The agent may transmit a message with attributes such as a unique identifier to the disparate calendaring system. If the disparate calendaring system acknowledges the event with a success, the agent may log the occurrence of a success. Agent may transmit additional messages having native events to additional disparate systems.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to the field of coordinating scheduleentries in multiple electronic calendars and more specifically, toformatting a calendar request from a format of a source to a format ofthe target.

2. Description of the Related Art

Among office workers, for example, technical, administrative, and salesstaff, there has been a growing trend to operate at sites other thanthat of the employer. Visits to clients can be of varying durations andoften may last months. Consequently, such workers may have access to aclient's computer network and be given permissions and logins forstandard office software, including calendaring tools.

Typically, this means that the itinerant worker, sometimes called acontractor, has multiple bosses to whom she should report. Often thebasic calendaring tools used at the client's offices vary from thoseused by the employer. This means that it is often necessary for theworker to allocate time on a client's calendaring system and then loginto the employer's calendaring system and redundantly enter the samemeeting details. The problem is exacerbated if the worker has, inaddition, a personal organizer or home computer on which a calendar ishosted.

In addition, there are groups of people who frequently need toorchestrate meetings across several organizations. These include venturecapitalists, diplomats, industry standard constituents, among others.One way to electronically mediate invitations to meetings is to describethe meeting details in the body of an email in straightforward English.Though this is a fairly universal language in the business world, itstill means a lot of redundant human keystrokes to allocate the timedevent in each recipient's calendar tool.

In recent years, a standard called the iCalendar Transport-IndependentInteroperability Protocol has been proposed in Request For Comments(RFC) 2446, of the internet engineering task force. The protocol isbased on messages sent from an originator to one or more recipients. TheiCalendar feature does not provide for a way to be backwards compatiblewith proprietary calendar software, vis-à-vis meeting invitations andsynchronizing scheduled events.

In addition, Lotus Notes® copies a server copy of a calendar replicatedwith a local copy on a predefined schedule. The replication is a form ofsynchronization and can be done with an arbitrary number of clients.This replication only supports multiple instances of the same calendarsystem and does not support synchronization between disparate calendarsystems made by different manufacturers.

Thus, it would be helpful to provide a mechanism by which a user may, inan ad hoc manner, update an event on a calendar in which the user iscurrently logged and send a synchronization event to another calendarsystem to which the user is entitled to update.

SUMMARY OF THE INVENTION

The aspects of present invention provide a method and computer usablecode to propagate an event from a source computer or platform to atarget calendaring system. An event is received from the sourcecomputer, wherein the event has an attribute. The event is formattedinto a native event using a target template for the target calendaringsystem in response to obtaining the event. A source attribute isappended to the native event. Responsive to appending the sourceattribute to the native event, the native event is sent to the targetcalendaring system to form a sent event. The sent event is logged.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features believed characteristic of the invention are setforth in the appended claims. The invention itself, however, as well asa preferred mode of use, further objectives and advantages thereof, willbest be understood by reference to the following detailed description ofan illustrative embodiment when read in conjunction with theaccompanying drawings, wherein:

FIG. 1 shows a pictorial representation of a data processing system inaccordance with a first illustrative embodiment of the presentinvention;

FIG. 2 shows a block diagram of a data processing system in accordancewith an illustrative embodiment of the present invention;

FIG. 3 shows a block diagram within a network having multiple targetcalendaring systems in accordance with an illustrative embodiment of thepresent invention;

FIG. 4 shows a block diagram within a network in accordance with anillustrative embodiment of the present invention;

FIG. 5 shows a general set of fields in a data structure for an event inaccordance with an illustrative embodiment of the present invention;

FIG. 6 shows a flow diagram of steps to make an invitation to at leastone calendaring system under the control of a peer in accordance with anillustrative embodiment of the present invention;

FIG. 7 shows a diagram of a flow diagram of steps to send an event to atleast one calendaring system under the control of a peer in accordancewith an illustrative embodiment of the present invention;

FIG. 8A shows a user interface to collect assignments between emailaddresses and templates in accordance with an illustrative embodiment ofthe present invention; and

FIG. 8B shows steps used to collect assignments in accordance with anillustrative embodiment of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

With reference now to the figures and in particular with reference toFIG. 1, a pictorial representation of a data processing system in whichthe present invention may be implemented is depicted in accordance witha preferred embodiment of the present invention. Computer 100 isdepicted which includes system unit 102, video display terminal 104,keyboard 106, storage devices 108, which may include floppy drives andother types of permanent and removable storage media, and mouse 110.Additional input devices may be included with personal computer 100,such as, for example, a joystick, touchpad, touch screen, trackball,microphone, and the like. Computer 100 can be implemented using anysuitable computer, such as an IBM eServer computer or IntelliStationcomputer, which are products of International Business MachinesCorporation, located in Armonk, New York. Although the depictedrepresentation shows a computer, other embodiments of the presentinvention may be implemented in other types of data processing systems,such as a network computer. Computer 100 also preferably includes agraphical user interface (GUI) that may be implemented by means ofsystems software residing in computer readable media in operation withincomputer 100.

With reference now to FIG. 2, a block diagram of a data processingsystem is shown in which the present invention may be implemented. Dataprocessing system 200 is an example of a computer, such as computer 100in FIG. 1, in which code or instructions implementing the processes ofthe present invention may be located. Data processing system 200 employsa peripheral component interconnect (PCI) local bus architecture.Although the depicted example employs a PCI bus, other bus architecturessuch as Accelerated Graphics Port (AGP) and Industry StandardArchitecture (ISA) may be used. Processor 202 and main memory 204 areconnected to PCI local bus 206 through PCI bridge 208. PCI bridge 208also may include an integrated memory controller and cache memory forprocessor 202. Additional connections to PCI local bus 206 may be madethrough direct component interconnection or through add-in connectors.In the depicted example,local area network (LAN) adapter 210, smallcomputer system interface (SCSI) host bus adapter 212, and expansion businterface 214 are connected to PCI local bus 206 by direct componentconnection. In contrast, audio adapter 216, graphics adapter 218, andaudio/video adapter 219 are connected to PCI local bus 206 by add-inboards inserted into expansion slots. Expansion bus interface 214provides a connection for a keyboard and mouse adapter 220, modem 222,and additional memory 224. SCSI host bus adapter 212 provides aconnection for hard disk drive 226, tape drive 228, and CD-ROM drive230. Typical PCI local bus implementations will support three or fourPCI expansion slots or add-in connectors.

An operating system runs on processor 202 and is used to coordinate andprovide control of various components within data processing system 200in FIG. 2. The operating system may be a commercially availableoperating system such as Windows XP, which is available from MicrosoftCorporation. An object oriented programming system such as Java may runin conjunction with the operating system and provides calls to theoperating system from Java programs or applications executing on dataprocessing system 200. “Java” is a trademark of Sun Microsystems, Inc.Instructions for the operating system, the object-oriented programmingsystem, and applications or programs are located on storage devices,such as hard disk drive 226, and may be loaded into main memory 204 forexecution by processor 202.

Those of ordinary skill in the art will appreciate that the hardware inFIG. 2 may vary depending on the implementation. Other internal hardwareor peripheral devices, such as flash read-only memory (ROM), equivalentnonvolatile memory, or optical disk drives and the like, may be used inaddition to or in place of the hardware depicted in FIG. 2. Also, theprocesses of the present invention may be applied to a multiprocessordata processing system.

For example, data processing system 200, if optionally configured as anetwork computer, may not include SCSI host bus adapter 212, hard diskdrive 226, tape drive 228, and CD-ROM 230. In that case, the computer,to be properly called a client computer, includes some type of networkcommunication interface, such as LAN adapter 210, modem 222, or thelike. As another example, data processing system 200 may be astand-alone system configured to be bootable without relying on sometype of network communication interface, whether or not data processingsystem 200 comprises some type of network communication interface. As afurther example, data processing system 200 may be a personal digitalassistant (PDA), which is configured with ROM and/or flash ROM toprovide non-volatile memory for storing operating system files and/oruser-generated data.

The depicted example in FIG. 2 and above-described examples are notmeant to imply architectural limitations. For example, data processingsystem 200 also may be a notebook computer or hand held computer inaddition to taking the form of a PDA. Data processing system 200 alsomay be a kiosk or a Web appliance.

The processes of the present invention are performed by processor 202using computer implemented instructions, which may be located in amemory such as, for example, main memory 204, or memory 224.

Those of ordinary skill in the art will appreciate that the hardware inFIG. 2 may vary depending on the implementation. Other internal hardwareor peripheral devices, such as flash memory, equivalent non-volatilememory, or optical disk drives and the like, may be used in addition to,or in place of, the hardware depicted in FIG. 2. Also, the processes ofthe present invention may be applied to a multiprocessor data processingsystem.

For example, data processing system may be a personal digital assistant(PDA), which is configured with flash memory to provide non-volatilememory for storing operating system files and/or user-generated data.The depicted example in FIG. 2 and above-described examples are notmeant to imply architectural limitations. For example, data processingsystem also may be a tablet computer or telephone device in addition totaking the form of a PDA.

One or more illustrative embodiments may provide an agent that, in an adhoc manner, updates an event on a user's open calendar and sends asynchronization event to another calendar system to which the user isentitled to update.

An agent, perhaps residing on a common platform with a user's calendarsystem, may receive an event from the platform. An event is a time thata user has set aside for a certain activity in the future. An event maybe, for example, a doctor's appointment, and would include attributessuch as time, and an indication of the type or class of event, in thiscase, “appointment”. For example, “doctor's appointment at 4:30 pm Aug.11, 2005”, wherein each attribute is stored to a data field or messagefield that comprises the event. FIG. 5 shows more examples of an event.The attribute associated with an event will vary depending on the typeof event.

The agent looks up an entry based on a target calendaring systemspecified in the event. In this example, the entry specifies a filtercriterion and a template or format of the target calendaring system. Thefilter criterion may be predetermined by a user setting one or moreconditions for an event to be transmitted. Likewise, the user may set,in advance, the template for the target calendar. Such aspects of theevent may be relatively stable and unchanged for lengthy periods oftime.

If the agent determines that the filter criterion, perhaps based on workhours, is met, the agent proceeds further. Agent may format the eventinto an event or message native to the target calendar, based on thetarget template found in the entry. Other embodiments may use otherfilter criteria, for example, an agent may restrict sending events to atarget calendaring system associated with a user's work where the filtercriterion is “allow all categories of events except ‘dates’”. Thus, ifan event satisfies the criterion, the agent takes further actions, suchas formatting the event.

The target template translates fields or attributes of an event tofields that are acceptable to a target calendaring system or targetcalendar. For example if the source has a field that is called “type ofevent”, but the target calendar has a field that is called “category”,the substance of each field may be the same. Therefore the targettemplate will show a correlation or mapping from the first calendarsystem field to the target calendar system field. The agent may append asource attribute to the native event. The agent may append a uniqueidentifier to the native event. Agent then sends the event to the targetcalendaring system. Agent may keep a log of the sent event.

FIG. 3 shows an illustrative embodiment of the present invention wheresource calendar application 351 or source calendaring system mayinteract with peers that may be hosted on differing domains and vary inthat such peers use different proprietary calendaring systems. Sourcecalendar application 351 uses a storage system 361. An illustrativeembodiment agent 353 may use storage system 363. Agent 353 and sourcecalendar application 351 may be co-resident on a common platform 352.Three calendaring applications, Alexandre's target calendar 355,Kulvir's target calendar 357, and Robert's target calendar 359 may eachreside on different systems, using storage system 365, storage system367, and storage system 369, respectively. Platform 352 may be acomputer, for example, computer 100, of FIG. 1.

FIG. 4 shows an illustrative embodiment of the present invention thatmay operate to link a source calendar to a target calendar. Sourcecalendar 401 may be an application operating on a data processingsystem. Target calendar 405 may be an application operating on a dataprocessing system. Often, Source calendar 401 and target calendar 405are resident on separate processing systems. However, it is appreciatedthat a corporate owner of a network of processing systems could hostboth source calendar 401 and target calendar 405 on a common computer.Source calendar 401 may be on a network in a different administrativedomain than target calendaring system or target calendar 405. Sourcecalendar 401 and target calendar 405 may store data for a singleaccount, often associated with a user, on source storage system 411 andtarget storage system 415, which may be persistent storage or volatilestorage.

An illustrative embodiment of the present invention may reside onplatform 402. Platform 402 may be a computer, for example, computer 100,of FIG. 1. An illustrative embodiment may be agent 403, which may resideon the common platform with source calendar 401. Agent storage 413 mayprovide persistent or volatile storage for user files, and temporarydata of the embodiment. Interconnect between source calendar 401, agent403, and target calendar 405 may be via wired or wireless networks,including a direct physical connection capable of supporting, forexample, packet transfers.

FIG. 5 shows a generally described data structure for a message or event500 that an agent may to attempt to synchronize disparate calendars.Event 500 is made up of attributes, such as, time 501, having abeginning time, possibly including a date, and optionally an end time.Category 503 may be one or more words, for example, “physical fitness”,“after hours”, “anniversary”, etc., that may be used to generallycategorize life's activities. Person 505 may be a person's name ornickname. In addition, person 505 may be an email address. Type of entry507 may be “appointment”, “meeting”, “all day event”, or “anniversary”,that is, situations that may require being with one or more otherpeople. Unique identifier 508 may be a serial number unique within thesending calendar system, for example, source calendar 401 of FIG. 4. Aunique identifier functions as a form of context so that an agent mayreceive a feedback message from a target system concerning any eventpreviously sent. When an agent receives a message carrying the uniqueidentifier and a status, the agent may match the unique identifier to alog and update the status accordingly. Action 509 may represent a stateof whether the calendar event has been synchronized with a targetcalendar system.

An agent may group the attributes of time, category, person, type ofentry, unique identifier, and action into a common set. As such, anevent may be comprised of one or more such sets, one set for each targetcalendaring system. Each set has a different unique identifier 508. Eachset may have a different person attribute 505. A person attribute is aunique name for a person within the source calendaring system, andincludes, for example, nicknames and email addresses. Target calendarsystems may be associated with person attribute 505, which may be merelyan email address association to that person. Thus, for purposes of anindividual synchronizing two personal calendars on disparate systems,person attribute 505, among multiple sets of attributes, may representthat same person's multiple instances of a calendar across the network.This is because person attribute 505 may have one or more references totarget calendaring systems. The agent may parse person attribute 505 tofind a target calendaring system reference. For example, if animplementation of an agent accepts an email address to describe theperson attribute, the agent may treat the portion of the email addressthat follows the “@” as a target calendaring system reference. Forexample, the agent may parse a person attribute, johndoe@example.com tofind a target calendaring system reference “example.com”. Alternatively,an agent may use person attribute 505 to look-up a reference to a targetcalendaring system from a database.

Event 550 may be a specific instance of event 500. Event 550 may becomprised of “8:30 AM; 10:30 AM” 511 in the time attribute, “physicalfitness” 513 in the category attribute, “Cecil” 515 in the personattribute, “meeting” 517 in the type of entry attribute, “ALX2J9” 518 inthe unique identifier attribute, and “ADD & SYNCH” 519 in the actionattribute. It is appreciated that a time attribute may include offsetsfrom universal time coordinated (UTC), as well as generally acceptedtime-zone designations. In this example, the agent may use “Cecil” 515as a key to lookup a target calendaring system in a database.

Event 550 may be a native event. A native event is an event thatpossesses attributes and orders such attributes to conform to theoperation of a target calendaring system. In other words, moreattributes may exist, for example, authentication or encryptionattributes. When a target calendaring system uses such attributes, theagent may provide such attributes. Thus, event 550 may represent anevent before it is converted and formatted to a native event, or event550 may represent an event after formatting into a native event.

FIG. 6 shows steps that may be implemented by an embodiment of thepresent invention when attempting to synchronize between two calendarsthat are made by different manufacturers. For example, an employeeworking in a customer's office may be using the customer's calendaringsystem, for example, Microsoft Outlook, to schedule time with his bossat the home office using a different calendaring system, for example,Lotus Notes. Additional target systems, for example, of a dotted-linereporting boss, may also be synchronized by performing multipleiterations of steps 605-645.

Initially, an agent operating on a computer may receive an inboundevent, for example, from a user. An inbound event may have attributes incommon with a target calendar native event, for example, a timeattribute and a person attribute. An inbound event may have attributesbeyond those in the native event, for example, Microsoft Outlookincludes a “location” attribute in some calendar invitations. Note thatthe inbound event may have more attributes than shown in FIG. 5.

The inbound event may include multiple person attributes, or multiplepersons in a single attribute, but delimited such that an agent mayparse multiple persons from the attribute. For this example, there aremultiple persons parsed from the same attribute. The agent receives aninbound event (step 601), perhaps via a local area network adapter. Thelocal area network adapter may be, for example, local area networkadapter 210 of FIG. 2. The agent identifies a target by, for example,relying on the first person appearing in the person attribute. The firstperson may operate as a key in a table lookup in a storage system. Thekey permits the agent to get the next target calendaring system (step605). Such a table may include a name or identifier of the type ofcalendaring system that is the target, for example, Lotus Notes, andMicrosoft Exchange server. The next target calendaring system may be thefirst and only target calendaring system. The target calendaring systemmay be addressable as a uniform resource locator (URL), such as, forexample, an email address, wherein such a detail may be available fromthe table lookup. The agent may be, for example, agent 353 of FIG. 3.The storage may be, for example, storage 363 of FIG. 3.

Since the agent knows the type of calendaring system, the agent may lookup a target template for the target system (step 607). The targettemplate may be a table for a pair of calendaring systems, for example“system a”, and “system b”, that shows how to copy, truncate orotherwise format an attribute from an inbound event to store theattribute, at least in part, in an attribute of a native event.

The agent then uses the template to select from inbound eventattributes, those attributes with which “system b” is compatible andformat the event attributes according to the template (step 609).

The agent may create a unique identifier in a limited string space byincreasing a serial number for each event that needs to be sent. Theagent appends the unique identifier with other data to form asynchronization event (step 611). Processor sends the native event tothe target calendaring system (step 615). The action attribute maycontain “ADD & SYNCH” which may be interpreted by the target calendaringsystem, of, for example, a user's boss, as a request to add the event tothe calendar.

The agent logs the unique identifier into a log in a storage, forexample, storage 363 of FIG. 3, and the action attribute of the nativeevent. Then the agent toggles a success field or bit to ‘0’ and logs thesuccess bit, the action attribute, and the unique identifier (step 617).Until a response is returned from the target system, the agent keeps thesuccess bit set to ‘0’.

The target system may receive the native event. Since the native eventmay have additional attributes that make the event compliant with thevCalendar® standard, it may be that the target system acknowledgesconformance with the vCalendar standard, and sends back a packet orother transmittal containing the unique identifier and a bit set to“success”. VCalendar is a registered trademark of Internet MailConsortium. An alternate version of the embodiment may permit, instead,an acknowledgement that the owner of the calendar system at the targethas accepted an invitation, wherein the target system sends back apacket containing the unique identifier and a bit set to “success”, thussignaling user acceptance. In both cases, if a response arrives at theagent having both the unique identifier and the success bit set, withinan appropriate time-out period, a “yes” occurrence of the test happens(step 619).

Upon receiving a message having a success and a unique identifier withina time-out period (step 619), the agent toggles the “success” field ofthe log entry (step 631). The agent may toggle “success” to a binary“1”. A “no” result concerning receipt of the success and uniqueidentifier (step 619) skips over said toggle (step 631). A test forfurther targets occurs (step 645). If “yes”, the agent gets the nexttarget calendaring system (step 605) and repeats the steps 605-645. Ifthe result is “no”, processing ends.

FIG. 7 shows steps that may be implemented by an illustrative embodimentof the present invention when attempting to synchronize between twocalendars that are potentially under the control of the same person. Forexample, a person may be trying to synchronize his calendar used by hisclient's office with the calendaring system of his employer. Thetopology of FIG. 4 may depict the communication of the agent.

Initially, an agent receives an event from a user (step 701). The eventarrives via an inter-process communication or message, such as may occurif the agent is hosted on the same computer with the source calendaringsystem. Alternatively, an agent may receive an event from a user via alocal area network adapter. The local area network adapter may be, forexample, local area network adapter 210 of FIG. 2. The inbound event mayinclude multiple uniform resource locator (URL) attributes, wherein eachuniform resource locator may be an email address for a calendaringsystem. Alternatively, the inbound event may include multiple uniformresource locators in a single attribute, but delimited such thatmultiple uniform resource locators may be parsed from the attribute.

The agent gets next target calendaring system, for example, by parsingthe uniform resource locator attribute (step 703). The user may havespecified one or more criteria to permit only some inbound events to besynchronized, for example, that the event specify a time between 8:00 AMand 5:00 PM on the same day. The criterion may be specified for eachtarget calendaring system. As such, an entry in a target calendaringsystem table may include a filter criterion. A test is made to see ifthe inbound event meets the filter criterion (step 705). A “no” causesprocessing to continue to test to see if additional target calendaringsystems exist in the inbound event (step 745). A met criterion or “yes”at step 705 causes the agent to look up or obtain a target template forthe target calendaring system (step 707).

The agent may format the event into a native event according to thetarget template (step 709). The target template may be a table for apair of calendaring systems, for example “system a”, and “system b”,that shows how to copy, truncate or otherwise format an attribute froman inbound event to store the attribute, at least in part, in anattribute of a native event.

The agent may append a source attribute and append a unique identifierto the native event (step 711). The source attribute, like the uniqueidentifier, assists the agent and the target calendar to engage inresponsive messaging and maintain a context to the messages. The sourceattribute may help the target calendar to determine if the targetcalendar will accept an event from the agent, and what, if any, sourcetag should be associated with the event on the target calendar system.The agent then sends the native event to the target calendaring system(step 715). Once sent, the native event becomes a sent event.

The agent may log the unique identifier, and the action attribute (step717). In addition, the agent logs a success attribute by logging abinary ‘0’ bit associated with the sending of the native event. Thus,the agent logs the sending of the synchronization event.

In one case, the target system may send a packet or message back to theagent wherein the message includes the unique identifier and a successbit set to “1”. This causes the test of whether the agent received asuccess and the unique identifier to result in a “yes” (step 719).Processing at the agent may continue to toggle the success attributestored earlier in the log (step 731).

However, in another case, the target system may send a packet or messageback to the agent wherein the message includes the unique identifier anda success bit set to “0”. When the agent receives a unique identifierand a “0” success bit, the agent receives a conflict signal. Furtheraction from the user may be necessary to add the sent event to thetarget system calendar, thus the “no” branch directs processing suchthat the agent requests, from the target system, the conflicting events(step 720). The target system may respond, whereby the agent receivesone or more events, perhaps in a native format of the target system(step 721).

Based on receiving a message of one or more events, the agent may show aconflict message to the user, perhaps using a graphical user interface(step 722). The user may confirm the addition of the new event to thetarget calendar system. Thus, the user may cause a positive outcome to“obtain confirmation” test (step 723). In other words, the agentreceives a user confirmation. Such an outcome causes the agent tocontinue by resending the event to the target requesting that the eventbe accreted with the conflicting event or events (step 725). Accretingmeans that the system that accretes the event adds the event to thecalendar such that the conflict remains, and two scheduled activitiesare shown or stored in such manner as to occupy the same time period.After requesting the accretion, the agent may toggle the successattribute (step 731). Following the step 731 or negative outcomes tosteps 705 and 723, the agent may determine if further targets exist forthe event (step 745). A uniform resource locator may represent eachtarget. If additional uniform resource locators exist, the agent beginsan iteration with step 703. If no additional uniform resource locatorsexist, processing ends.

FIG. 8A shows a representative graphical user interface of anillustrative embodiment of the present invention. The user interface maybe dialog box 800 which provides a text attribute for a user of acalendaring system to identify which named contacts use whichcalendaring system format or templates. The agent may prompt a user bydisplaying dialog box 800 and providing customary navigation andinteraction among fields and other interfaces. Alternatively, an agentmay use other methods of prompting, such as questions and answers. Nameattribute 801 may permit a user to enter first and last names of acontact person or other entity. Email attribute 803 may permit a user toenter the email address for the user or the user's calendaring system.Series of radio buttons 805 may include the captions of calendaringsystems for which a mapping of attributes is known. In other words, foreach caption a template is known and stored in a storage facilityaccessible to the agent. Such calendaring systems may include OutlookExchange, Lotus Notes, and Blackberry Enterprise Server, for example. Inaddition, the dialog box may have a caption for an industry standardcalendar, for example, vCalendar. When a user selects a radio button,the agent may receive a user input specifying the calendar type ortemplate to associate with a name or person attribute 801. Thus, a usermay show a contact's connection with the template stated in the captionof the radio button. Alternatively, the user may show a connectionbetween the calendar type and a uniform resource locator.

FIG. 8B shows steps for collecting calendaring system associations for alist of contacts of an illustrative embodiment of the present invention.The agent accesses a list of contacts. In one illustrative embodiment ofthe present invention, a user may have many contacts in a contactsdatabase. Therefore, the contacts database may be a source for the listof contacts. In another illustrated embodiment of the present invention,the user may provide the list of contacts for each instance where theuser would like to send out an event notification. Thus, the list wouldbe user-supplied, and the agent would receive a user input specifyingthe calendar type to associate with a person attribute. In both cases,an agent may collect information to associate a calendar type with aperson attribute, for example, a person attribute that includes auniform resource locator. A first step of the agent is to obtain thenext contact in the list (step 821). The agent gets the graphical userinput that selects the preferred calendaring system for the contact(step 823). Then the agent stores the contact and the calendarassociation (step 825) in a database. The database may be storage 363 ofFIG. 3, for example. The agent may perform a test to see if additionalcontacts remain in the list (step 827). If “yes”, then another iterationcontinues with step 821. Otherwise, the process may end.

Thus, it is shown how illustrative embodiments may provide an agentthat, in an ad hoc manner, updates an event on a calendar in which auser is currently logged on and sends a native event to another calendarsystem to which the user is entitled to update.

The invention can take the form of an entirely hardware embodiment, anentirely software embodiment or an embodiment containing both hardwareand software elements. In a preferred embodiment, the present inventionis implemented in the software, which includes, but is not limited to,firmware, resident software, microcode, etc.

Furthermore, the invention can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. For the purposes of this description,a computer-usable or computer readable medium can be any apparatus thatcan contain, store, communicate, propagate, or transport the program foruse by or in connection with the instruction execution system,apparatus, or device.

The medium can be an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system (or apparatus or device) or apropagation medium. Examples of a computer-readable medium include asemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), arigid magnetic disk and an optical disk. Current examples of opticaldisks include compact disk-read only memory (CD-ROM), compactdisk-read/write (CD-R/W) and DVD.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Theembodiment was chosen and described in order to best explain theprinciples of the invention, the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A computer implemented method for propagating an event from a sourcecomputer to a target calendaring system comprising: receiving an eventfrom the source computer, wherein the event has an attribute; getting atleast one entry in a target calendaring system table, the entry having atarget template; formatting the event into a native event using thetarget template for the target calendaring system in response toobtaining the event; appending a source attribute to the native event;appending a unique identifier to the native event; responsive toappending the source attribute to the native event, sending the nativeevent to the target calendaring system to form a sent event; and loggingthe sent event.
 2. The computer implemented method of claim 1 whereinthe entry has a person attribute and sending further comprises: parsingthe person attribute to find a target calendaring system reference; andtransmitting the native event based on the target calendaring systemreference.
 3. The computer implemented method of claim 2 wherein the oneperson attribute comprises a uniform resource locator.
 4. The computerimplemented method of claim 3 further comprising: prompting a user for acalendar type associated with the person attribute, wherein promptingoccurs after receiving the event; receiving a user input specifying thecalendar type to associate with the person attribute.
 5. The computerimplemented method of claim 4 wherein the prompting comprises:displaying a dialog box having a caption for an industry standardcalendar.
 6. The computer implemented method of claim 1 wherein sendingthe native event to the target calendaring system to form a sent eventis responsive to appending the unique identifier to the native eventwherein logging further comprises: receiving the unique identifier and asuccess bit from the target calendaring system; and toggling the successfield in a log based on the unique identifier.
 7. A computer implementedmethod for propagating an event from a source calendaring system to atarget calendaring system, the source calendaring system and the targetcalendaring system under control of a user, comprising: receiving anevent from the source calendaring system, the event having at least oneattribute; getting at least one entry in a target calendaring systemtable, the entry having at least one of a filter criterion and a targettemplate; determining whether the at least one attribute satisfies thefilter criterion; formatting the event into a native event according tothe target template based on determining that the at least one attributesatisfies the filter criterion; appending a source attribute to thenative event; appending a unique identifier to the native event; sendingthe native event to the target calendaring system; and logging a bit toa log, wherein the bit is associated with the sending of the nativeevent.
 8. The computer implemented method of claim 7 further comprising:receiving a bit and the unique identifier from the target calendaringsystem.
 9. The computer implemented method of claim 8 furthercomprising: toggling the bit in the log.
 10. The computer implementedmethod of claim 7 further comprising: receiving a conflict signal. 11.The computer implemented method of claim 10 further comprising: inresponse to receiving the conflict signal, showing a conflict message tothe user.
 12. The computer implemented method of claim 11 furthercomprising: receiving a user confirmation.
 13. The computer implementedmethod of claim 12 further comprising: in response to receiving the userconfirmation, resending the native event to the target calendaringsystem.
 14. A data processing system comprising: a bus; a storage deviceconnected to the bus, wherein computer usable code is located in thestorage device; a communication unit connected to the bus; a processingunit connected to the bus, wherein the processing unit executes thecomputer usable code to: receive an event from the source calendaringsystem, the event having at least one attribute; get at least one entryin a target calendaring system table, the entry having at least one of afilter criterion and a target template; determine whether the at leastone attribute satisfies the filter criterion; format the event into anative event according to the target template based on a determinationthat the at least one attribute satisfies the filter criterion; append asource attribute to the native event; append a unique identifier to thenative event; send the native event to the target calendaring system;and log a bit to a log, wherein the bit is associated with the sendingof the native event.
 15. The data processing system of claim 14 whereinthe processing unit further executes the computer usable code to:receive a bit and the unique identifier from the target calendaringsystem.
 16. The data processing system of claim 15 wherein theprocessing unit further executes the computer usable code to: toggle thebit in the log.
 17. The data processing system of claim 14 wherein theprocessing unit further executes the computer usable code to: receive aconflict signal.
 18. The data processing system of claim 17 wherein theprocessing unit further executes the computer usable code to: show aconflict message to the user.
 19. The data processing system of claim 18wherein the processing unit further executes the computer usable codeto: receive a user confirmation.
 20. The data processing system of claim19 wherein the processing unit further executes the computer usable codeto: resend the native event to the target calendaring system in responseto receiving the user confirmation.